package com.itheima.test6;

public class StudentTest {
    public static void main(String[] args) {
        /*定义一个长度为3的数组，数组存储1~3名学生对象作为初始数据，学生对象的学号，姓名各不相同。
        学生的属性：学号，姓名，年龄。
        要求1：再次添加一个学生对象，并在添加的时候进行学号的唯一性判断。
        要求2：添加完毕之后，遍历所有学生信息。
        要求3：通过id删除学生信息
        如果存在，则删除，如果不存在，则提示删除失败。
        要求4：删除完毕之后，遍历所有学生信息。
        要求5：查询数组id为“heima002”的学生，如果存在，则将他的年龄+1岁*/
        //1.先定义一个长度为三的数组
        Student[] arr = new Student[3];
        //2.生成三名学生对象存储到数组中去
        Student stu1 = new Student(1, "zhangsan", 20);
        Student stu2 = new Student(2, "lisi", 21);
        Student stu3 = new Student(3, "wangwu", 22);
        arr[0] = stu1;
        arr[1] = stu2;
        arr[2] = stu3;
        //3.  要求1：再次添加一个学生对象，并在添加的时候进行学号的唯一性判断。
        //3.1 先生成一个学生对象
        Student stu4 = new Student(4, "zhaoliu", 23);
        //3.2 判断该学号在数组中是否唯一
        boolean flag = contains(arr, stu4.getId());
        //System.out.println(flag);
        //3.3 若学号唯一，则添加该对象，若学号不唯一则提示添加失败
        if (!flag) {
            //添加对象，判断数组是否已满,count既是数组中元素的个数，也是新添加元素的数组下标
            int count=getArrCount(arr);

            if(count!= arr.length){
                //3.3.1 若原数组未满，添加到原数组中
                arr[count]=stu4;
                //4.要求2：添加完毕之后，遍历所有学生信息。
                printArr(arr);

            }else{
                //3.3.2若原数组已满满，添加到新数组中
                //3.3.2.1 创建新数组
                Student[] newArr=new Student[arr.length+1];
                //3.3.2.2 将旧数组中的元素添加到新数组中来
                for (int i = 0; i < arr.length; i++) {
                    newArr[i]=arr[i];
                }
                //3.3.2.3 将新元素添加到新数组中来
                newArr[count]=stu4;
                //4.要求2：添加完毕之后，遍历所有学生信息。
                printArr(newArr);
            }

        } else {
            System.out.println("学号已存在，添加失败");
        }



    }

    public static boolean contains(Student[] arr, int id) {
        for (int i = 0; i < arr.length; i++) {
            Student stu = arr[i];
            if (stu != null) {
                if (stu.getId() == id) {
                    return true;
                }
            }
        }
        return false;
    }
    public static int getArrCount(Student[] arr){
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            Student stu = arr[i];
            if (stu!=null){
                count++;
            }
        }
        return count;
    }
    public static void printArr(Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            Student stu = arr[i];
            if(stu!=null){
                System.out.println(stu.getId()+", "+stu.getName()+", "+ stu.getAge());
            }
        }
    }

}
